package br.ufg.inf.sd.truco;


/**
 * Esta classe representa uma carta do baralho do truco.
 * @author Egio Arruda Junior & André Vilas Boas.
 * @version 1.0
 */


public class Carta implements java.io.Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String nome;				//nome da carta
	private String nipe;				//nipe da carta
	private int valor;					//valor da carta
	private boolean selecionada; 		//esta variável define se uma determinada carta foi dada ao um jogador 
	
	/**
	 * Construtor padrão da classe. Aqui o valor é setado com 
	 * zero e o nome com null.
	 */
	public Carta(){
		this.nome = "";
		this.nipe = "";
		this.valor = 0;
		this.selecionada = true;
	}
	
	/**
	 * Este método retorna se uma determinada carta foi dada a um jogador ou não.
	 * @return true para o caso da carta já ter sido dada a um jogador e false caso contrário.
	 */
	public boolean isSelecionada() {
		return selecionada;
	}

	/**
	 * Este método seta uma carta para dada a um jogador (true) ou não dada (faslse).
	 * @param selecionada valor booleano para a questão se a carta foi ou não dada a um jogador.
	 */
	public void setSelecionada(boolean selecionada) {
		this.selecionada = selecionada;
	}

	/**
	 * Este método retorna o nipe da carta.
	 * Possíveis valores para nipe: paus, copas, ouro, espada. 
	 * @return o nome da carta.
	 */
	public String getNipe() {
		return nipe;
	}

	/**
	 * Este método seta o nome da carta.
	 * Possíveis valores para nipe: paus, copas, ouro, espada.
	 * @param nipe nome que deverá ser setado como o nome da carta.
	 */
	public void setNipe(String nipe) {
		this.nipe = nipe;
	}

	/**
	 * Este método retorna o valor de uma determinada carta.
	 * @return valor da carta.
	 */
	public int getValor() {
		return valor;
	}

	/**
	 * Este método será responsável por setar o valor de uma determinada carta.
	 * @param valor valor numérico que devera ser associado à carta.
	 */
	public void setValor(int valor) {
		this.valor = valor;
	}

	/**
	 * Este método é responsável por resgatar com o nome da carta.
	 * Possíveis valores para nome: valete, dama, rei, as, dois, tres, quatro.
	 * @return o nome da carta.
	 */
	public String getNome() {
		return nome;
	}

	/**
	 * Este método seta o nome da carta.
	 * Possíveis valores para nome: valete, dama, rei, as, dois, tres, quatro.
	 * @param nome nome que será dado a carta.
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	
}
